package edu.cibertec.action;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.upload.FormFile;
import org.apache.struts.util.MessageResources;

import edu.cibertec.bean.BeanCargarArchivo;
import edu.cibertec.servicio.ServiceApplication;

public class CargarArchivoAction extends Action{
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {		
		
		BeanCargarArchivo cab=new BeanCargarArchivo();

		ServiceApplication servicio=new ServiceApplication();
		
		
		
		// Process the FormFile
		DynaActionForm myForm=(DynaActionForm)form;
		
        FormFile myFile      =(FormFile)myForm.get("miArchivo");
       // String tipoArchivo   =(String)myForm.get("tipoArchivo");
        String contentType   = myFile.getContentType();
        String fileName      = myFile.getFileName();
        int fileSize         = myFile.getFileSize();
        byte[] fileData      = myFile.getFileData();
        MessageResources mensaje=getResources(request);
        
        //obtener ruta desde el key en messageReources
        String ruta=null;
      //  if(tipoArchivo.equals("01")){
        	if(fileName.substring(fileName.length()-3).equals("doc")||
        	   fileName.substring(fileName.length()-3).equals("pdf"))
        		ruta =mensaje.getMessage("ruta.archivo");
        	else{
        		request.setAttribute("flag", "flag");
        		return mapping.findForward("falla");
        	}
      //  }
       // else{
        	ruta =mensaje.getMessage("ruta.diagrama");
     //   }
		
		//Creamos archivo de salida
        FileOutputStream fos = new FileOutputStream(ruta+fileName);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
  
        // Escibimos en el archivo
       bos.write(fileData, 0, fileData.length);
       bos.flush();
       
    System.out.println("contentType: " + contentType);
    System.out.println("File Name: " + fileName);
    System.out.println("File Size: " + fileSize);

	
	cab.setCodigoDoc((String)myForm.get("codigoDoc"));
	cab.setCodigoPd((String)myForm.get("codigoDp"));

	
	//cab.setCodigoDoc("3");
    cab.setArcDoc(ruta+fileName);
    cab.setDescripcionDoc(fileName);
    cab.setFecha("2010/10/10");

    if(servicio.ingresarArchivo(cab)){
		return mapping.findForward("exito");
	}
	else{
		return mapping.findForward("falla");
	}

		
	}

}
